{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1f5c857f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5d11fe88",
   "metadata": {},
   "source": [
    "### 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d46fc972",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_csv(\"./car_price.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "863f86fb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>year</th>\n",
       "      <th>selling_price</th>\n",
       "      <th>km_driven</th>\n",
       "      <th>fuel</th>\n",
       "      <th>seller_type</th>\n",
       "      <th>transmission</th>\n",
       "      <th>owner</th>\n",
       "      <th>mileage</th>\n",
       "      <th>engine</th>\n",
       "      <th>max_power</th>\n",
       "      <th>torque</th>\n",
       "      <th>seats</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Maruti Swift Dzire VDI</td>\n",
       "      <td>2014</td>\n",
       "      <td>450000</td>\n",
       "      <td>145500</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>23.4 kmpl</td>\n",
       "      <td>1248 CC</td>\n",
       "      <td>74 bhp</td>\n",
       "      <td>190Nm@ 2000rpm</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Skoda Rapid 1.5 TDI Ambition</td>\n",
       "      <td>2014</td>\n",
       "      <td>370000</td>\n",
       "      <td>120000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Second Owner</td>\n",
       "      <td>21.14 kmpl</td>\n",
       "      <td>1498 CC</td>\n",
       "      <td>103.52 bhp</td>\n",
       "      <td>250Nm@ 1500-2500rpm</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Honda City 2017-2020 EXi</td>\n",
       "      <td>2006</td>\n",
       "      <td>158000</td>\n",
       "      <td>140000</td>\n",
       "      <td>Petrol</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Third Owner</td>\n",
       "      <td>17.7 kmpl</td>\n",
       "      <td>1497 CC</td>\n",
       "      <td>78 bhp</td>\n",
       "      <td>12.7@ 2,700(kgm@ rpm)</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                           name  year  selling_price  km_driven    fuel  \\\n",
       "0        Maruti Swift Dzire VDI  2014         450000     145500  Diesel   \n",
       "1  Skoda Rapid 1.5 TDI Ambition  2014         370000     120000  Diesel   \n",
       "2      Honda City 2017-2020 EXi  2006         158000     140000  Petrol   \n",
       "\n",
       "  seller_type transmission         owner     mileage   engine   max_power  \\\n",
       "0  Individual       Manual   First Owner   23.4 kmpl  1248 CC      74 bhp   \n",
       "1  Individual       Manual  Second Owner  21.14 kmpl  1498 CC  103.52 bhp   \n",
       "2  Individual       Manual   Third Owner   17.7 kmpl  1497 CC      78 bhp   \n",
       "\n",
       "                  torque  seats  \n",
       "0         190Nm@ 2000rpm    5.0  \n",
       "1    250Nm@ 1500-2500rpm    5.0  \n",
       "2  12.7@ 2,700(kgm@ rpm)    5.0  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "7438226d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 8128 entries, 0 to 8127\n",
      "Data columns (total 13 columns):\n",
      " #   Column         Non-Null Count  Dtype  \n",
      "---  ------         --------------  -----  \n",
      " 0   name           8128 non-null   object \n",
      " 1   year           8128 non-null   int64  \n",
      " 2   selling_price  8128 non-null   int64  \n",
      " 3   km_driven      8128 non-null   int64  \n",
      " 4   fuel           8128 non-null   object \n",
      " 5   seller_type    8128 non-null   object \n",
      " 6   transmission   8128 non-null   object \n",
      " 7   owner          8128 non-null   object \n",
      " 8   mileage        7907 non-null   object \n",
      " 9   engine         7907 non-null   object \n",
      " 10  max_power      7913 non-null   object \n",
      " 11  torque         7906 non-null   object \n",
      " 12  seats          7907 non-null   float64\n",
      "dtypes: float64(1), int64(3), object(9)\n",
      "memory usage: 825.6+ KB\n"
     ]
    }
   ],
   "source": [
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a326717f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "name               0\n",
       "year               0\n",
       "selling_price      0\n",
       "km_driven          0\n",
       "fuel               0\n",
       "seller_type        0\n",
       "transmission       0\n",
       "owner              0\n",
       "mileage          221\n",
       "engine           221\n",
       "max_power        215\n",
       "torque           222\n",
       "seats            221\n",
       "dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "edf04483",
   "metadata": {},
   "outputs": [],
   "source": [
    "df.dropna(inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "709b5844",
   "metadata": {},
   "source": [
    "### 数据的清晰处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "60c2d02d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>year</th>\n",
       "      <th>selling_price</th>\n",
       "      <th>km_driven</th>\n",
       "      <th>fuel</th>\n",
       "      <th>seller_type</th>\n",
       "      <th>transmission</th>\n",
       "      <th>owner</th>\n",
       "      <th>mileage</th>\n",
       "      <th>engine</th>\n",
       "      <th>max_power</th>\n",
       "      <th>torque</th>\n",
       "      <th>seats</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Maruti Swift Dzire VDI</td>\n",
       "      <td>2014</td>\n",
       "      <td>450000</td>\n",
       "      <td>145500</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>23.4 kmpl</td>\n",
       "      <td>1248 CC</td>\n",
       "      <td>74 bhp</td>\n",
       "      <td>190Nm@ 2000rpm</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Skoda Rapid 1.5 TDI Ambition</td>\n",
       "      <td>2014</td>\n",
       "      <td>370000</td>\n",
       "      <td>120000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Second Owner</td>\n",
       "      <td>21.14 kmpl</td>\n",
       "      <td>1498 CC</td>\n",
       "      <td>103.52 bhp</td>\n",
       "      <td>250Nm@ 1500-2500rpm</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Honda City 2017-2020 EXi</td>\n",
       "      <td>2006</td>\n",
       "      <td>158000</td>\n",
       "      <td>140000</td>\n",
       "      <td>Petrol</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Third Owner</td>\n",
       "      <td>17.7 kmpl</td>\n",
       "      <td>1497 CC</td>\n",
       "      <td>78 bhp</td>\n",
       "      <td>12.7@ 2,700(kgm@ rpm)</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                           name  year  selling_price  km_driven    fuel  \\\n",
       "0        Maruti Swift Dzire VDI  2014         450000     145500  Diesel   \n",
       "1  Skoda Rapid 1.5 TDI Ambition  2014         370000     120000  Diesel   \n",
       "2      Honda City 2017-2020 EXi  2006         158000     140000  Petrol   \n",
       "\n",
       "  seller_type transmission         owner     mileage   engine   max_power  \\\n",
       "0  Individual       Manual   First Owner   23.4 kmpl  1248 CC      74 bhp   \n",
       "1  Individual       Manual  Second Owner  21.14 kmpl  1498 CC  103.52 bhp   \n",
       "2  Individual       Manual   Third Owner   17.7 kmpl  1497 CC      78 bhp   \n",
       "\n",
       "                  torque  seats  \n",
       "0         190Nm@ 2000rpm    5.0  \n",
       "1    250Nm@ 1500-2500rpm    5.0  \n",
       "2  12.7@ 2,700(kgm@ rpm)    5.0  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "263927ce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    23.40\n",
       "1    21.14\n",
       "2    17.70\n",
       "Name: mileage, dtype: float64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"mileage\"] = df[\"mileage\"].map(lambda x : float(x.split(\" \")[0]))\n",
    "df[\"mileage\"].head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "95a32e94",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    1248.0\n",
       "1    1498.0\n",
       "2    1497.0\n",
       "Name: engine, dtype: float64"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"engine\"] = df[\"engine\"].map(lambda x : float(x.split(\" \")[0]))\n",
    "df[\"engine\"].head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "35f08e5f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     74.00\n",
       "1    103.52\n",
       "2     78.00\n",
       "Name: max_power, dtype: float64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"max_power\"] = df[\"max_power\"].map(lambda x : float(x.split(\" \")[0]))\n",
    "df[\"max_power\"].head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "084ae8e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    2000.0\n",
       "1    2500.0\n",
       "2    2700.0\n",
       "Name: torque, dtype: float64"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 12.7@ 2,700(kgm@ rpm)\t\n",
    "\n",
    "import re\n",
    "\n",
    "def parse_rpm(torque):\n",
    "    torque = torque.replace(\",\", \"\")\n",
    "    return max([float(x) for x in re.findall(\"\\d+\", torque)])\n",
    "\n",
    "df[\"torque\"] = df[\"torque\"].map(parse_rpm)\n",
    "df[\"torque\"].head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "77522c5d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 7906 entries, 0 to 8127\n",
      "Data columns (total 13 columns):\n",
      " #   Column         Non-Null Count  Dtype  \n",
      "---  ------         --------------  -----  \n",
      " 0   name           7906 non-null   object \n",
      " 1   year           7906 non-null   int64  \n",
      " 2   selling_price  7906 non-null   int64  \n",
      " 3   km_driven      7906 non-null   int64  \n",
      " 4   fuel           7906 non-null   object \n",
      " 5   seller_type    7906 non-null   object \n",
      " 6   transmission   7906 non-null   object \n",
      " 7   owner          7906 non-null   object \n",
      " 8   mileage        7906 non-null   float64\n",
      " 9   engine         7906 non-null   float64\n",
      " 10  max_power      7906 non-null   float64\n",
      " 11  torque         7906 non-null   float64\n",
      " 12  seats          7906 non-null   float64\n",
      "dtypes: float64(5), int64(3), object(5)\n",
      "memory usage: 864.7+ KB\n"
     ]
    }
   ],
   "source": [
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "9167e4a0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>year</th>\n",
       "      <th>selling_price</th>\n",
       "      <th>km_driven</th>\n",
       "      <th>fuel</th>\n",
       "      <th>seller_type</th>\n",
       "      <th>transmission</th>\n",
       "      <th>owner</th>\n",
       "      <th>mileage</th>\n",
       "      <th>engine</th>\n",
       "      <th>max_power</th>\n",
       "      <th>torque</th>\n",
       "      <th>seats</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Maruti Swift Dzire VDI</td>\n",
       "      <td>2014</td>\n",
       "      <td>450000</td>\n",
       "      <td>145500</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>23.40</td>\n",
       "      <td>1248.0</td>\n",
       "      <td>74.00</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Skoda Rapid 1.5 TDI Ambition</td>\n",
       "      <td>2014</td>\n",
       "      <td>370000</td>\n",
       "      <td>120000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Second Owner</td>\n",
       "      <td>21.14</td>\n",
       "      <td>1498.0</td>\n",
       "      <td>103.52</td>\n",
       "      <td>2500.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Honda City 2017-2020 EXi</td>\n",
       "      <td>2006</td>\n",
       "      <td>158000</td>\n",
       "      <td>140000</td>\n",
       "      <td>Petrol</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Third Owner</td>\n",
       "      <td>17.70</td>\n",
       "      <td>1497.0</td>\n",
       "      <td>78.00</td>\n",
       "      <td>2700.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                           name  year  selling_price  km_driven    fuel  \\\n",
       "0        Maruti Swift Dzire VDI  2014         450000     145500  Diesel   \n",
       "1  Skoda Rapid 1.5 TDI Ambition  2014         370000     120000  Diesel   \n",
       "2      Honda City 2017-2020 EXi  2006         158000     140000  Petrol   \n",
       "\n",
       "  seller_type transmission         owner  mileage  engine  max_power  torque  \\\n",
       "0  Individual       Manual   First Owner    23.40  1248.0      74.00  2000.0   \n",
       "1  Individual       Manual  Second Owner    21.14  1498.0     103.52  2500.0   \n",
       "2  Individual       Manual   Third Owner    17.70  1497.0      78.00  2700.0   \n",
       "\n",
       "   seats  \n",
       "0    5.0  \n",
       "1    5.0  \n",
       "2    5.0  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bbf58289",
   "metadata": {},
   "source": [
    "### 数据的统计分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "66f99e97",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>year</th>\n",
       "      <th>selling_price</th>\n",
       "      <th>km_driven</th>\n",
       "      <th>fuel</th>\n",
       "      <th>seller_type</th>\n",
       "      <th>transmission</th>\n",
       "      <th>owner</th>\n",
       "      <th>mileage</th>\n",
       "      <th>engine</th>\n",
       "      <th>max_power</th>\n",
       "      <th>torque</th>\n",
       "      <th>seats</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2014</td>\n",
       "      <td>450000</td>\n",
       "      <td>145500</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "      <td>23.40</td>\n",
       "      <td>1248.0</td>\n",
       "      <td>74.00</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2014</td>\n",
       "      <td>370000</td>\n",
       "      <td>120000</td>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Second Owner</td>\n",
       "      <td>21.14</td>\n",
       "      <td>1498.0</td>\n",
       "      <td>103.52</td>\n",
       "      <td>2500.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2006</td>\n",
       "      <td>158000</td>\n",
       "      <td>140000</td>\n",
       "      <td>Petrol</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>Third Owner</td>\n",
       "      <td>17.70</td>\n",
       "      <td>1497.0</td>\n",
       "      <td>78.00</td>\n",
       "      <td>2700.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   year  selling_price  km_driven    fuel seller_type transmission  \\\n",
       "0  2014         450000     145500  Diesel  Individual       Manual   \n",
       "1  2014         370000     120000  Diesel  Individual       Manual   \n",
       "2  2006         158000     140000  Petrol  Individual       Manual   \n",
       "\n",
       "          owner  mileage  engine  max_power  torque  seats  \n",
       "0   First Owner    23.40  1248.0      74.00  2000.0    5.0  \n",
       "1  Second Owner    21.14  1498.0     103.52  2500.0    5.0  \n",
       "2   Third Owner    17.70  1497.0      78.00  2700.0    5.0  "
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.drop(columns=[\"name\"], inplace=True)\n",
    "df.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "044ec025",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>fuel</th>\n",
       "      <th>seller_type</th>\n",
       "      <th>transmission</th>\n",
       "      <th>owner</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>7906</td>\n",
       "      <td>7906</td>\n",
       "      <td>7906</td>\n",
       "      <td>7906</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>unique</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>top</th>\n",
       "      <td>Diesel</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Manual</td>\n",
       "      <td>First Owner</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>freq</th>\n",
       "      <td>4299</td>\n",
       "      <td>6563</td>\n",
       "      <td>6865</td>\n",
       "      <td>5215</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          fuel seller_type transmission        owner\n",
       "count     7906        7906         7906         7906\n",
       "unique       4           3            2            5\n",
       "top     Diesel  Individual       Manual  First Owner\n",
       "freq      4299        6563         6865         5215"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.select_dtypes(include=[\"object\"]).describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "12a5dbf8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mileage</th>\n",
       "      <th>engine</th>\n",
       "      <th>max_power</th>\n",
       "      <th>torque</th>\n",
       "      <th>seats</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>7906.000000</td>\n",
       "      <td>7906.000000</td>\n",
       "      <td>7906.000000</td>\n",
       "      <td>7906.000000</td>\n",
       "      <td>7906.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>19.419861</td>\n",
       "      <td>1458.708829</td>\n",
       "      <td>91.587374</td>\n",
       "      <td>3069.864154</td>\n",
       "      <td>5.416393</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>4.036263</td>\n",
       "      <td>503.893057</td>\n",
       "      <td>35.747216</td>\n",
       "      <td>943.662100</td>\n",
       "      <td>0.959208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>624.000000</td>\n",
       "      <td>32.800000</td>\n",
       "      <td>400.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>16.780000</td>\n",
       "      <td>1197.000000</td>\n",
       "      <td>68.050000</td>\n",
       "      <td>2400.000000</td>\n",
       "      <td>5.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>19.300000</td>\n",
       "      <td>1248.000000</td>\n",
       "      <td>82.000000</td>\n",
       "      <td>3000.000000</td>\n",
       "      <td>5.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>22.320000</td>\n",
       "      <td>1582.000000</td>\n",
       "      <td>102.000000</td>\n",
       "      <td>4000.000000</td>\n",
       "      <td>5.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>42.000000</td>\n",
       "      <td>3604.000000</td>\n",
       "      <td>400.000000</td>\n",
       "      <td>21800.000000</td>\n",
       "      <td>14.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           mileage       engine    max_power        torque        seats\n",
       "count  7906.000000  7906.000000  7906.000000   7906.000000  7906.000000\n",
       "mean     19.419861  1458.708829    91.587374   3069.864154     5.416393\n",
       "std       4.036263   503.893057    35.747216    943.662100     0.959208\n",
       "min       0.000000   624.000000    32.800000    400.000000     2.000000\n",
       "25%      16.780000  1197.000000    68.050000   2400.000000     5.000000\n",
       "50%      19.300000  1248.000000    82.000000   3000.000000     5.000000\n",
       "75%      22.320000  1582.000000   102.000000   4000.000000     5.000000\n",
       "max      42.000000  3604.000000   400.000000  21800.000000    14.000000"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.select_dtypes(include=[\"float\"]).describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "84521168",
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "50559e85",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: seaborn in ./carprice-env/lib/python3.8/site-packages (0.11.2)\n",
      "Requirement already satisfied: pandas>=0.23 in ./carprice-env/lib/python3.8/site-packages (from seaborn) (1.3.3)\n",
      "Requirement already satisfied: matplotlib>=2.2 in ./carprice-env/lib/python3.8/site-packages (from seaborn) (3.4.3)\n",
      "Requirement already satisfied: numpy>=1.15 in ./carprice-env/lib/python3.8/site-packages (from seaborn) (1.21.2)\n",
      "Requirement already satisfied: scipy>=1.0 in ./carprice-env/lib/python3.8/site-packages (from seaborn) (1.7.1)\n",
      "Requirement already satisfied: pytz>=2017.3 in ./carprice-env/lib/python3.8/site-packages (from pandas>=0.23->seaborn) (2021.3)\n",
      "Requirement already satisfied: python-dateutil>=2.7.3 in ./carprice-env/lib/python3.8/site-packages (from pandas>=0.23->seaborn) (2.8.2)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in ./carprice-env/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (1.3.2)\n",
      "Requirement already satisfied: cycler>=0.10 in ./carprice-env/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (0.10.0)\n",
      "Requirement already satisfied: pyparsing>=2.2.1 in ./carprice-env/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (2.4.7)\n",
      "Requirement already satisfied: pillow>=6.2.0 in ./carprice-env/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (8.4.0)\n",
      "Requirement already satisfied: six>=1.5 in ./carprice-env/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas>=0.23->seaborn) (1.16.0)\n",
      "\u001b[33mWARNING: You are using pip version 19.2.3, however version 21.3 is available.\n",
      "You should consider upgrading via the 'pip install --upgrade pip' command.\u001b[0m\n"
     ]
    }
   ],
   "source": [
    "!pip install seaborn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "5f7bc0e1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,8))\n",
    "sns.heatmap(df.corr(), annot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "92d57b3c",
   "metadata": {},
   "source": [
    "### 特征工程"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "725e32b7",
   "metadata": {},
   "source": [
    "#### 分类字段one-hot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "d116a101",
   "metadata": {},
   "outputs": [],
   "source": [
    "cat_columns = [\"fuel\", \"seller_type\", \"transmission\", \"owner\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "b2b90cd0",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import OneHotEncoder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "c3d51c18",
   "metadata": {},
   "outputs": [],
   "source": [
    "oneHotEncoder = OneHotEncoder(drop='first')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "9117e213",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1., 0., 0., ..., 0., 0., 0.],\n",
       "       [1., 0., 0., ..., 1., 0., 0.],\n",
       "       [0., 0., 1., ..., 0., 0., 1.],\n",
       "       ...,\n",
       "       [1., 0., 0., ..., 0., 0., 0.],\n",
       "       [1., 0., 0., ..., 0., 0., 0.],\n",
       "       [1., 0., 0., ..., 0., 0., 0.]])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cat_features = oneHotEncoder.fit_transform(df[cat_columns]).toarray()\n",
    "cat_features"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0e269936",
   "metadata": {},
   "source": [
    "#### 数值字段-标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "d86ef9d0",
   "metadata": {},
   "outputs": [],
   "source": [
    "num_columns = [\"mileage\", \"engine\", \"max_power\", \"torque\", \"seats\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "8b0e4aa3",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "d0e9b1e6",
   "metadata": {},
   "outputs": [],
   "source": [
    "standardScaler = StandardScaler()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "e6a43d7b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.98615741, -0.41818825, -0.49202393, -1.13380819, -0.4341278 ],\n",
       "       [ 0.42619816,  0.07798015,  0.33382687, -0.60392401, -0.4341278 ],\n",
       "       [-0.42612921,  0.07599548, -0.38012003, -0.39197033, -0.4341278 ],\n",
       "       ...,\n",
       "       [-0.02969788, -0.41818825, -0.49482153, -1.13380819, -0.4341278 ],\n",
       "       [ 1.02827824, -0.12445656, -0.60392784, -0.07403982, -0.4341278 ],\n",
       "       [ 1.02827824, -0.12445656, -0.60392784, -0.07403982, -0.4341278 ]])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "num_features = standardScaler.fit_transform(df[num_columns])\n",
    "num_features"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "abc41ff0",
   "metadata": {},
   "source": [
    "#### 构建X和Y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "d7fcca6b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.        ,  0.        ,  0.        , ..., -0.49202393,\n",
       "        -1.13380819, -0.4341278 ],\n",
       "       [ 1.        ,  0.        ,  0.        , ...,  0.33382687,\n",
       "        -0.60392401, -0.4341278 ],\n",
       "       [ 0.        ,  0.        ,  1.        , ..., -0.38012003,\n",
       "        -0.39197033, -0.4341278 ],\n",
       "       ...,\n",
       "       [ 1.        ,  0.        ,  0.        , ..., -0.49482153,\n",
       "        -1.13380819, -0.4341278 ],\n",
       "       [ 1.        ,  0.        ,  0.        , ..., -0.60392784,\n",
       "        -0.07403982, -0.4341278 ],\n",
       "       [ 1.        ,  0.        ,  0.        , ..., -0.60392784,\n",
       "        -0.07403982, -0.4341278 ]])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = np.hstack([cat_features, num_features])\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "95b07de4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([450000, 370000, 158000, ..., 382000, 290000, 290000])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = df[\"selling_price\"].to_numpy()\n",
    "y"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6296bf6b",
   "metadata": {},
   "source": [
    "### 模型训练"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cf0a3262",
   "metadata": {},
   "source": [
    "#### 数据集划分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "639c9f7b",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "5f729f45",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "8f6d9dc5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((6324, 15), (1582, 15), (6324,), (1582,))"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.shape, X_test.shape, y_train.shape, y_test.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b24937db",
   "metadata": {},
   "source": [
    "#### 随机森林"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "5fd19f46",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from sklearn.metrics import accuracy_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "944bd517",
   "metadata": {},
   "outputs": [],
   "source": [
    "random_model = RandomForestRegressor(n_estimators=300, random_state=42, n_jobs=-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "022c81fd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomForestRegressor(n_estimators=300, n_jobs=-1, random_state=42)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "random_model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "fae64ad8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([187152.13199735, 682842.19100397, 165660.05582381, ...,\n",
       "       323886.35635594, 956306.90671236, 454964.70999045])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred = random_model.predict(X_test)\n",
    "y_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "0c4b836e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9806247928815699"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "random_model.score(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "428931f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9366499810264303"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "random_model.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e7f2f496",
   "metadata": {},
   "source": [
    "### 训练线性回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "e8091ecc",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "437ce49e",
   "metadata": {},
   "outputs": [],
   "source": [
    "lr_model = LinearRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "91b46645",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "6c287960",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.681894079529991"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_model.score(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "38e00b95",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6469446348543998"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_model.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3ddbdd6c",
   "metadata": {},
   "source": [
    "### 存储模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "fb5fb058",
   "metadata": {},
   "outputs": [],
   "source": [
    "model_dir = \"./flask-carprice/models\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "4f2e9c86",
   "metadata": {},
   "outputs": [],
   "source": [
    "import joblib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "3088763a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['./flask-carprice/models/random_model.joblib']"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "joblib.dump(random_model, f\"{model_dir}/random_model.joblib\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "ca86fb48",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['./flask-carprice/models/oneHotEncoder.joblib']"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "joblib.dump(oneHotEncoder, f\"{model_dir}/oneHotEncoder.joblib\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "5547fe2c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['./flask-carprice/models/standardScaler.joblib']"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "joblib.dump(standardScaler, f\"{model_dir}/standardScaler.joblib\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "781ba266",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'{\"year\":{\"6046\":2017},\"selling_price\":{\"6046\":2100000},\"km_driven\":{\"6046\":48000},\"fuel\":{\"6046\":\"Diesel\"},\"seller_type\":{\"6046\":\"Individual\"},\"transmission\":{\"6046\":\"Automatic\"},\"owner\":{\"6046\":\"Second Owner\"},\"mileage\":{\"6046\":17.9},\"engine\":{\"6046\":2143.0},\"max_power\":{\"6046\":136.0},\"torque\":{\"6046\":3000.0},\"seats\":{\"6046\":5.0}}'"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sample(1).to_json()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0171e588",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
